import { defineStore } from 'pinia'
import { login } from '@/api/user'

// 第一个参数，存储的id
export const useUsersStore = defineStore('users', {
	// 具体数据
	// state => 要存储的数据
	state: () => {
		return {
			id: 0,
			name: "",
			age: 0,
			token: ""
		}
	},
	// getters => 获取复杂的数据时, 定义了一些函数
	getters: {
		// number => 函数返回值(必加) , this表示的当前的存储
		// 给函数加参数时，state会传递进去
		getAge(): number {
			return this.age + 100
		},
		getAge2: (state) => {
			return state.age + 100
		}
		// error 
		// getAge2: () => {
		//       return this.age + 100
		// }
	},
	// actions => 复杂的写数据操作
	actions: {
		saveId(name) {
			this.id = name
		},
		saveName(name) {
			this.name = name
		},
		saveToken(name) {
			this.token = name
		},
		login(data) {
			// 发起请求
			console.log("store login 发起请求:", data)
			//让api/user下的login发起请求
			return new Promise((resolve) => {
				login(data)
					.then(res => {
						// localStorage.setItem("username1",res.data.username)
						//存储token
						// console.log("存储token",res)
						// console.log(res.message)
						if (res.code == 0) {
							this.saveId(res.data.id)
							this.saveName(res.data.username)
							this.saveToken(res.data.token)
							resolve(res)
						} else {
							resolve(res)
						}
					},
					
					)
			})
		}
	},
// 持久化存储插件，开启数据缓存
persist: {
	enabled: true,
		strategies: [
			{
				key: 's_user',
				storage: localStorage,
			}
		]
}
})